import java.util.Arrays;

public class exercise {
    //使用函数求最大值
    //求最大值方法的重载
    public static int max(int a, int b){
        int max = a > b ? a : b;
        return max;
    }
    public static int max(int a, int b, int c){
        int bigger1 = max(a, b);
        int bigger2 = max(bigger1, b);
        return bigger2;
    }
    //求 N 的阶乘
    public static int sum(int n){
        int sum = 1;
        for(int i = 1; i <= n;i++){
            sum *= i;
        }
        return sum;
    }
    //求1！+2！+3！+4！+........+n!的和
    public static int sum1(int n){
        int sum = 0;
        for(int i = 1; i <= n; i++){
            sum += sum(i);
        }
        return sum;
    }
    //求和的重载
    public static int add(int a, int b){
        return a + b;
    }
    public static double add(double a, double b){
        return a + b;
    }
    //递归求阶乘
    public static int mul(int n){
        if(n ==1){
            return 1;
        }
        return n * mul(n - 1);
    }

    //汉诺塔问题
    /*
    这里a始终代表起始柱，b始终代表辅助柱，c始终代表目标柱
     */
    public static void hanoi(int num, char a, char b, char c){
        if(num == 1){
            System.out.println("第" + num + "个圆盘从" + a + " -> " + c);
        } else{
            hanoi(num - 1, a, c, b);
            System.out.println("第" + num + "个圆盘从" + a + " -> " + c);
            hanoi(num - 1, b, a, c);
        }
    }
    //循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上
    public static void change(int[] arr){
        for(int i = 0; i < arr.length; i++){
            arr[i]  *= 2;
        }
    }

    //求数组的平均值
    public static double avg(int [] arr){
        int sum = 0;
        for(int x : arr){
            sum += x;
        }
        return (double)sum / (double)arr.length;
    }
    //奇数位于偶数之前
    public static void sort(int [] arr){
        for(int i = 0; i <arr.length; i++){
            for(int j = 0; j <arr.length-1; j++){
                if(arr[j] > arr[j+1]){
                    int tmp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
    }
//给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target 的那 两个 整数，并返回它们的数组下标。
    public static String  search(int [] arr,int x){
        for(int i = 0; i <arr.length-1; i++){
            for(int j = i+1; j <arr.length; j++){
                if(arr[i] + arr[j] == x){
                    return i + " " + j;
                }
            }
        }
        return "-1";
    }
    //只出现一次的数字
    public static int once(int [] arr){
        for(int i = 0; i <arr.length; i++){
            int count = 0;
            for(int j = 0; j <arr.length; j++){
                if(arr[i] == arr[j]){
                    count++;
                }
            }
            if(count > arr.length / 2){
                return arr[i];
            }
        }
        return -1;
    }
    //存在连续三个奇数的数组
    public static boolean isTrue(int [] arr){
        for (int i = 1; i < arr.length-1; i++){
            int count = 0;
            if(arr[i-1] % 2 != 0){  //i的前一个数字为奇数,只检查i前后的两个数字
                for(int j = i-1; j <= i+1; j++){
                    if(arr[j] % 2 != 0){
                        count++;
                    }
                }
            } else {if(i !=arr.length-2){
                for(int j = i; j <= i+2; j++){  //i的前一个为偶数，从i开始检查3个
                    if(arr[j] % 2 != 0){
                        count++;
                    }
                }
            }
            }
            if(count == 3){
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        int [] arr = {1,3,2,1,4};
        System.out.println(isTrue(arr));
//        System.out.println(once(arr));
//        System.out.println(search(arr,5));
//        sort(arr);
//        System.out.println(Arrays.toString(arr));

//        System.out.println(avg(arr));
//        change(arr);
//        System.out.println(Arrays.toString(arr));
        //System.out.println(max(1,4,2));
        //sum(4);
        //System.out.println(sum1(3));
        //System.out.println(mul(5));
        //hanoi(3, 'A', 'B', 'C');
        //System.out.println(add(1,2));
        //System.out.println(add(1.2,3.2));

    }
}
